/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modele;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

/**
 *
 * @author Delphine
 */
public class Formateur extends User{

    private String email;
    private String etablissement;
    private String tel;
    private ArrayList<Integer> projets;

    /**
     *
     * @param id_formateur
     * @param nom
     * @param prenom
     * @param email
     * @param etablissement
     * @param tel
     * @param projets
     */
    public Formateur(int id_formateur, String nom, String prenom, String email, String etablissement, String tel, ArrayList<Integer> projets) {
        super(id_formateur, nom, prenom);
        this.email = email;
        this.etablissement = etablissement;
        this.tel = tel;
        this.projets = projets;
    }

    /**
     *
     * @return
     */
    public String getEmail() {
        return email;
    }

    /**
     *
     * @return
     */
    public int getId_formateur(){
        return super.getId_user();
    }

    /**
     *
     * @return
     */
    public String getEtablissement() {
        return etablissement;
    }

    /**
     *
     * @return
     */
    public String getTel() {
        return tel;
    }


    /**
     *
     * @return
     */
    public ArrayList<Integer> getProjets() {
        return projets;
    }
    

    /** Obtenir le formateur d'id id_formateur. Null si pas trouv�.
   *
   * @param id_formateur
   * @return
   * @throws java.sql.SQLException
   */
    public static Formateur getById(int id_formateur) throws SQLException{
        Formateur result = null;
        Connection connexion = null;
        Statement select = null;
        ResultSet rs = null;
        try {
          connexion = BD.connect();
          select = connexion.createStatement();
          String sql = "SELECT * FROM formateur WHERE id_formateur="
              + id_formateur;
          rs = select.executeQuery(sql);
          if (rs.next()) {
            result = new Formateur(rs.getInt("id_formateur"), rs.getString("nom"),rs.getString("prenom"),rs.getString("email"),rs.getString("etablissement"),rs.getString("tel"),Formateur.getIDProjets(rs.getInt("id_formateur")));
          }
        } finally {
            BD.close(rs);
            BD.close(select);
            BD.close(connexion);
        }
        return result;
    }

    /** Obtenir les membres du groupe. Null si pas trouv�.
   *
     * @param id_formateur
     * @return
   * @throws java.sql.SQLException
   */
    public static ArrayList<Projet> getProjets(int id_formateur) throws SQLException{
        ArrayList<Integer> idProjets = getIDProjets(id_formateur);
        ArrayList<Projet> projets = new ArrayList<Projet>();
        for(int i =0;i<idProjets.size();i++){
            projets.add(Projet.getById(idProjets.get(i)));
        }
        return projets;
    }

     /** Obtenir les membres du groupe. Null si pas trouv�.
   *
      * @param id_formateur
      * @return
   * @throws java.sql.SQLException
   */
    public static ArrayList<Integer> getIDProjets(int id_formateur) throws SQLException{
        Connection connexion = null;
        Statement select = null;
        ResultSet rs = null;
        ArrayList<Integer> projets = null;
        try {
          connexion = BD.connect();
          select = connexion.createStatement();
          String sql = "SELECT P.id_projet FROM projet P, formateur F WHERE P.id_formateur =  F.id_formateur and F.id_formateur = \'" + id_formateur + "\'";
          rs = select.executeQuery(sql);
          projets = new ArrayList<Integer>();
          while (rs.next() != false) {
            projets.add(rs.getInt("id_projet"));
          }
        } finally {
            BD.close(rs);
            BD.close(select);
            BD.close(connexion);
        }
        return projets;
    }


    @Override
    public boolean equals(Object formateur){
        return (super.getId_user() == ((Formateur)formateur).getId_formateur()
                &&super.getNom().equals(((Formateur)formateur).getNom())
                &&super.getPrenom().equals(((Formateur)formateur).getPrenom())
                &&email.equals(((Formateur)formateur).getEmail())
                &&etablissement.equals(((Formateur)formateur).getEtablissement())
                &&tel.equals(((Formateur)formateur).getTel())
                &&((projets.equals(((Formateur)formateur).getProjets()))||(projets.isEmpty()&&((Formateur)formateur).getProjets().isEmpty())));
    }
}
